public class Liczba 
{
	private int n;
	Liczba() 
	{
		this.n=0;
	}

	Liczba(int n) 
	{
		this.n=n;
	}

	Liczba(String n, int podstawa) throws LiczbaException 
	{
		if(podstawa>16 || podstawa<2)
			throw new LiczbaException (" Blędna podstawa! " );
		String[] Znaki = "0123456789ABCDEF".split("");
		String[] tab = n.split("");				
	
		int dl = tab.length;
		int i,j=1;
		int[] wartosci = new int [dl-1];
		double wynik=0;
	
		while(j<dl)
		{
			for(i=1;i<=podstawa;++i)				
			{
				if(tab[j].equals(Znaki[i]))
				{
				wartosci[j-1]=i-1;
				i=19;					
				}
			
			}
			if(i!=20)
				throw new LiczbaException ("Zly zapis liczby" );
			j++;
		}
	
	
		for(i=0;i<dl-1;i++)
			wynik=wynik+wartosci[dl-i-2]*Math.pow(podstawa,i);	
		
		this.n=(int)wynik;
	}

	public String zapis(int podstawa) throws LiczbaException 	
	{
		if(this.n==0)
			throw new LiczbaException ("0");	
		String[] Znaki = "0123456789ABCDEF".split("");
		String Zapis="";
		int liczba=this.n;

		while(liczba>0)
		{					
			Zapis=Znaki[liczba%podstawa+1]+Zapis;
		
			liczba=liczba/podstawa;
			
		}
	
		return Zapis;
	}
}

